/*******************************************************************************
 * 版权：北京润尼尔网络科技有限公司，保留所有版权<br>
 * 版本：v1.0.0<br>
 * 文件：CommandDeleteMulti.js<br>
 * 日期：2016年9月20日<br>
 * 作者: 王志远<br>
 * 功能：删除命令<br>
 * 
 * 修改记录：<br>
 * 日期 描述 更新功能<br>
 ******************************************************************************/

window.makeNamespace(window,"Rainier.UI.V2");

/**
 * 类型名称：Rainier.UI.V2.CommandDeleteMulti<br>
 * 类型功能：删除元件命令<br>
 */
Rainier.UI.V2.CommandDeleteMulti = draw2d.command.Command.extend({
	
	NAME : "Rainier.UI.V2.CommandDeleteMulti",
	
	/**
	 * 函数名称：Rainier.UI.V2.CommandDeleteMulti.init<br>
	 * 函数功能：构造函数<br>
	 * 异常信息：无<br>
	 */
	init : function(editParts){
		this._super();
		this.editParts 	  = editParts;
		this.commandList  = new draw2d.util.ArrayList();
		var _this 		  = this;
		this.editParts.each(function(j,editPart){
    		var cmd = new Rainier.UI.V2.CommandDelete(editPart);
    		if(cmd!==null){
    			_this.commandList.add(cmd);
    		}
    	});
	},
	
	/**
	 * 函数名称：Rainier.UI.V2.CommandDeleteMulti.canExecute<br>
	 * 函数功能：遍历判断是否可以删除<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：Boolean 是否可删除<br>
	 * 异常信息：<br>
	 */
    canExecute: function()
    {
    	var canExecute = 1;
    	this.editParts.each(function(j,editPart){
    		if(!editPart.getFigure().getCanvas()){
    			canExecute = 0;
    		}
    	});
        return canExecute !== 0;
    },


    /**
	 * 函数名称：Rainier.UI.V2.CommandDeleteMulti.execute<br>
	 * 函数功能：执行添加功能<br>
	 * 参数输入：无<br>
	 * 参数输出：无<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    execute: function()
    {
    	this.commandList.each(function(j,command){
    		command.execute();
    	});
    },
    
    /**
	 * 函数名称：Rainier.UI.V2.CommandDeleteMulti.undo<br>
	 * 函数功能：撤销命令<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    undo: function()
    {
    	this.commandList.reverse();
    	this.commandList.each(function(j,command){
    		command.undo();
    	});
    },

    /**
	 * 函数名称：draw2d.command.CommandDeleteMulti.redo<br>
	 * 函数功能：重做命令<br>
	 * 函数返回：无<br>
	 * 异常信息：无<br>
	 */
    redo: function()
    {
    	this.execute();
    },
});

